// 导入web模块
const express = require('express')
// 上传图片的模块
const multer = require("multer");
// 操作文件的模块
const fs = require('fs');
//2.创建路由对象
const router = express.Router()
// 储存文件
const storage = multer.diskStorage({
  //设置上传后文件路径
  destination: function (req, file, cb) {
    //   console.info(req)
      // 要将文件保存到哪个文件夹下面
      const folderName = (req.body.folderName || 'temp').trim();
      // 保存的目录路径
      const savePath = `./public/${folderName}`;
      // 判断目录路径是否存在，不存在就创建一个目录
      const isExists = fs.existsSync(savePath);
      if (!isExists) {
          fs.mkdir(savePath, function (err) {
              if (err) {
                  cb(null, `./public/temp`);
              } else {
                  cb(null, savePath);
              }
          })
      } else {
          cb(null, savePath);
      }
  },
  //给上传文件重命名
  filename: function (req, file, cb) {
      const fileFormat = (file.originalname).split(".");
      const newFileName = Date.now() + "." + fileFormat[fileFormat.length - 1];
      cb(null, newFileName);
  }
});
const fileUploadAPIUrl = "/upload";
// 此路径使用multer中间件，后面的 file 是自定义的值
router.use(fileUploadAPIUrl, multer({ storage}).array("file"));
// 文件上传完成后，会被监听到
router.post(fileUploadAPIUrl, (req, res) => {
  const fileInfo = req.files[0];
  if (!fileInfo) {
      return res.json({
          fail: true,
          msg: "文件上传失败"
      })
  }
  return res.json({
      success: true,
      msg: "文件上传成功",
      data: {
          originalName: Buffer.from(fileInfo.originalname, "latin1").toString(
              "utf8"
          ),
          fileSize: fileInfo.size,
          filePath: '/' + fileInfo.path.replace(/\\/g, '/')
      }
  })
})

//向外导出路由对象
module.exports = router